Electronic Design Automation (EDA) tools are used in the process of designing and verifying new electronic systems (Devices Under Test—DUTs). Despite great advances in EDA scope and sophistication, many functional errors may still be found in the tested DUTs. In order to find such errors, every DUT typically requires more verification throughout the design cycle. Applying verification and maintaining a regression across the design flow is a most effective means of keeping continuous, interactive verification from slowing the design process.
Regression testing is used to verify that a simulated DUT performs correctly, usually after applying changes or interfacing it with another simulated device. In a regression session, a series of test runs (usually a large number of test runs) are run on the DUT, aiming at detecting failures (bugs) while covering as many coverage points as possible. The test runs typically are generated randomly based on a predefined test environment (the testbench) and one or more tests (containing mainly additional constraints) are run multiple times.
The success of a regression test in detecting bugs or covering coverage points is not linearly proportional to the number of times the test is run. In fact, over time, tests become less effective in achieving their tasks.